package com.gzj.environment.module.collectData.message.impl;

import com.gzj.environment.constant.CollectDataConstant;
import com.gzj.environment.module.collectData.context.ClientContext;
import com.gzj.environment.module.collectData.message.Message;
import com.gzj.environment.module.collectData.util.ChannelUtils;
import io.netty.channel.ChannelHandlerContext;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;

@Component
@Slf4j
public class ConnectMessage implements Message {
    /**
     * 消息类型
     *
     * @return
     */
    @Override
    public String messageType() {
        return CollectDataConstant.MESSAGE_TYPE_IS_CONNECT;
    }

    /**
     * 处理消息
     * @param ctx netty客户端通道信息
     * @param message 消息内容
     */
    @Override
    public void handle(ChannelHandlerContext ctx, String message) {
        log.info("处理ip为{}的连接消息，消息内容为{}", ctx.channel().remoteAddress(), message);
        // 获取客户端类型，根据解析规则，第二位是客户端类型
        String type = message.substring(1, 2);
        // 获取点位组，根据解析规则，三四两位是点位组
        String group = message.substring(2, 4);
        // 获取点位编号
        String number = message.substring(4);
        // 将实例保存起来
        ClientContext.addClient(type, group, number, ctx);
    }

}
